# 员工管理系统
# 员工字典 员工编号 姓名 年龄 薪资
staff_info = {}


def add_staff():
    staff_no = input_is_num('请输入员工编号:', '员工编号')

    if staff_info.get(staff_no):
        print('当前用户已存在！请重新输入')
        return add_staff()
    staff_name = input('请输入用户姓名:').strip()
    staff_age = input_is_num('请输入用户年龄:', '用户年龄')
    staff_salary = input_is_num('请输入用户薪资:', '用户薪资')

    staff_info[staff_no] = [staff_name, staff_age, staff_salary]
    print('添加成功！')
    return


def find_staff():
    staff_no = input_is_num('请输入要查询的员工编号:', '员工编号')
    if not staff_info.get(staff_no):
        print('此员工编号不存在！')
        return

    list_one_staff(staff_no)


def alter_salary():
    staff_no = input_is_num('请输入要修改的员工编号:', '员工编号')
    if not staff_info.get(staff_no):
        print('此员工编号不存在！')
        return

    list_one_staff(staff_no)
    new_salary = input_is_num('请输入修改后的用户薪资:', '用户薪资')
    staff_info[staff_no][2] = new_salary
    print('修改成功')


def show_all_staff():
    if not staff_info:
        print('目前没有员工信息，请先添加员工！')
        return

    print('员工编号'.ljust(10, ' '), '姓名'.ljust(10, ' '), '年龄'.ljust(10, ' '), '薪资'.ljust(10, ' '))
    for i in staff_info:
        staff_no = i
        staff = staff_info[i]
        print(str(staff_no).center(10, ' '), str(staff[0]).center(10, ' '), str(staff[1]).center(10, ' '),
              str(staff[2]).center(10, ' '))


def delete_staff():
    if not staff_info:
        print('没有员工可删除！请先添加员工')
        return
    staff_no = input_is_num('请输入要删除的员工编号:', '员工编号')
    if not staff_info.get(staff_no):
        print('此员工编号不存在！')
        return

    list_one_staff(staff_no)
    while True:
        is_delete = input('是否删除该员工？y/n:')
        if is_delete == 'y':
            staff_info.pop(staff_no)
            print('删除成功')
            return

        if is_delete == 'n':
            print('取消删除！')
            return
        print('输入错误！请输入y或者n')


func_dict = {
    '1': add_staff,
    '2': find_staff,
    '3': alter_salary,
    '4': show_all_staff,
    '5': delete_staff,
}


# 输入是否为数字
def input_is_num(msg, input_name):
    while True:
        res = input(msg).strip()
        if res.isdigit():
            return int(res)
        print('%s必须是数字！请重新输入' % input_name)


# 列出一个员工
def list_one_staff(staff_no):
    staff = staff_info.get(staff_no)
    print('员工编号'.ljust(10, ' '), '姓名'.ljust(10, ' '), '年龄'.ljust(10, ' '), '薪资'.ljust(10, ' '))
    print(str(staff_no).center(10, ' '), str(staff[0]).center(10, ' '), str(staff[1]).center(10, ' '),
          str(staff[2]).center(10, ' '))


def run():
    while True:
        print('欢迎使用员工管理系统'.center(40, '*'))
        print('1.添加员工信息'.center(40, ' '))
        print('2.查询员工信息'.center(40, ' '))
        print('3.修改员工薪资'.center(40, ' '))
        print('4.查询所有员工'.center(40, ' '))
        print('5.删除员工信息'.center(40, ' '))
        print('输入 q 退出系统'.center(40, '*'))
        order = input('请输入功能序号:').strip()

        # 退出系统
        if order == 'q':
            print('感谢使用！退出系统')
            exit(0)

        # 执行功能
        if func_dict.get(order):
            func_dict[order]()
            input('按回车继续enter...')


run()
